//用栈实现队列
import java.util.Stack;
public class MyQueue2 {
    private Stack<Integer> stack1;
    private Stack<Integer> stack2;

    public MyQueue2() {
        stack1 = new Stack<>();
        stack2 = new Stack<>();
    }
    //入队列
    public void push(int x) {
        stack1.push(x);
    }

    //出队列
    public int pop() {
        if(empty()){//两个栈都为空，即队列为空
            return -1;
        }
        if(stack2.empty()){//如果第二个栈为空
            while(!stack1.empty()){//若第一个栈不为空，进入循环
                stack2.push(stack1.pop());//将第一个栈中所有的元素弹出，依次压入第二个栈中
            }
        }
        return stack2.pop();//弹出第二个栈中的栈顶元素，这样就实现了出队列
    }
    //查看队列的首元素
    public int peek() {
        if(empty()){//两个栈都为空，即队列为空
            return -1;
        }
        if(stack2.empty()){//如果第二个栈为空
            while(!stack1.empty()){//若第一个栈不为空，进入循环
                stack2.push(stack1.pop());//将第一个栈中所有的元素弹出，依次压入第二个栈中
            }
        }
        return stack2.peek();
    }

    public boolean empty() {
        return stack1.isEmpty()&&stack2.isEmpty();//判断两个栈是否都为空
    }
}
